package com.fjnu.fjnu_grade_demo.controller;


import com.fjnu.fjnu_grade_demo.R;
import com.fjnu.fjnu_grade_demo.moudle.entity.Student;
import com.fjnu.fjnu_grade_demo.service.IAdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/admin")
public class AdminController {

    @Autowired
    private IAdminService adminService;

    /**
     * 获取所有学生的总成绩排名。
     *
     * @return 返回一个包含所有学生总成绩排名的响应对象 R。
     */
    @GetMapping("/getTotalStudentGradeRank")
    public R getTotalStudentGradeRank(){
        return R.ok(adminService.getTotalStudentGradeRank());
    }

    /**
     * 获取某门课程的成绩排名。
     *
     * @param courseName 课程名称，用于指定需要查询的课程。
     * @return 返回一个包含该课程成绩排名的响应对象 R。
     */
    @GetMapping("/getSingleCourseGradeRank")
    public R getSingleCourseGradeRank(String courseName){
        return R.ok(adminService.getSingleCourseGradeRank(courseName));
    }

    /**
     * 获取某个学生的总成绩排名。
     *
     * @param studentId 学生用户名，用于指定需要查询的学生。
     * @param academicYear 学年，用于指定需要查询的学年。
     * @param semester 学期，用于指定需要查询的学期。
     * @return 返回一个包含该学生总成绩排名的响应对象 R。
     */
    @GetMapping("/getOneTotalGradeRank")
    public R getOneTotalGradeRank(String studentId,String academicYear,String semester){
        return R.ok(adminService.getOneTotalGradeRank(studentId,academicYear,semester));
    }

    /**
     * 获取某个学生在某门课程中的成绩排名。
     *
     * @param userName 学生用户名，用于指定需要查询的学生。
     * @param courseName 课程名称，用于指定需要查询的课程。
     * @return 返回一个包含该学生在该课程中成绩排名的响应对象 R。
     */
    @GetMapping("/getOneSingleGradeRank")
    public R getOneSingleGradeRank(String userName,String courseName){
        return R.ok(adminService.getOneSingleGradeRank(userName,courseName));
    }

    /**
     * 删除某个学生的相关信息。
     *
     * @param studentId 学生ID，用于指定需要删除的学生。
     * @return 返回一个表示删除成功与否的响应对象 R。
     */
    @DeleteMapping("/deleteStudentMessage")
    public R deleteStudentMessage(String studentId){
        return R.ok(adminService.deleteStudentMessage(studentId));
    }

    /**
     * 删除某个学年和学期的相关信息。
     *
     * @param academicYear 学年，用于指定需要删除的学年。
     * @param semester 学期，用于指定需要删除的学期。
     * @return 返回一个表示删除成功与否的响应对象 R。
     */
    @DeleteMapping("/deleteAcademicYearSemesterMessage")
    public R deleteAcademicYearSemesterMessage(String academicYear,String semester){
        return R.ok(adminService.deleteAcademicYearSemesterMessage(academicYear,semester));
    }

    /**
     * 添加学生信息。
     *
     * @param student 学生对象，包含需要添加的学生信息。
     * @return 返回一个表示添加成功与否的响应对象 R。
     */
    @PostMapping("/addStudentMessage")
    public R addStudentMessage(@RequestBody Student student){
        return R.ok();
    }

}
